ڼҿʼϷ
ĿͻԴ빤WindHorn
һCWHAppCWHWindowCWHDXGraphicWindow
CWHDefProcessCloginProcessCcharacterProcessCgameProcess
ͻWinMainCWHDXGraphicWindow g_xMainWnd;һڡ
ͻCWHDXGraphicWindowԼCreateеCWHWindowCreateڣȻٵԼCreateDXG()ʼDirectX
 
Ϣѭ
ˣͻ굥ʱȵCWHWindowڵĻصWndProc    g_pWHApp->MainWndProc g_pWHAppΪstatic CWHApp* g_pWHApp = NULLCWHApp
캯иֵΪg_pWHApp = this; 
g_pWHApp->MainWndProcCWHApp::MainWndProcһ麯ʵǵCWHDXGraphicWindow::MainWndProc
   if ( m_pxDefProcess ) 
       return m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam); 
g_xMainWnd.m_pxDefProcessȫֱg_bProcStateǵǰĴ״̬ 
     CLoginProcess->DefMainWndProc      
CCharacterProcess->DefMainWndProc 
CGameProcess->DefMainWndProc       
 
ûϷ֮󣬵߶Ķ
ͻִ̣(߶)
CGameProcess::OnLButtonDown(WPARAM wParam, LPARAM lParam)úĴ̣
 1 g_xClientSocket.SendNoticeOK();CnoticeBoxm_xNotice.OnButtonDown
     if m_xMsgBtn.OnLButtonDowng_xClientSocket.SendNoticeOK()ͻCM_LOGINNOTICEOKϢ
2m_pxSavedTargetActor = NULL;ΪաCInterface::OnLButtonDownж
   λ(CmirMsgBox, CscrlBar,CgameBtnGetWindowInMousePos)
     a. g_xClientSocket.SendItemIndex(CM_DROPITEM Ʒ)
 Ϸִm_pxPlayerObject->Operate()
          m_pUserInfo->UserDropGenItem    
         m_pUserInfo->UserDropItem      ɾͨƷ
          SM_DROPITEM_SUCCESS             ɾɹ
SM_DROPITEM_FAIL                ɾʧ
 
     b. m_stMapItemListб(洢ңNPC) g_xClientSocket.SendPickUp CM_PICKUP
         Ϸm_pxPlayerObject->Operate() PickUp()Ϣ
m_pMap->GetItem(m_nCurrX, m_nCurrY) صͼ(ҩ,Ʒӵ)
         1memcmp(pMapItem->szName, g_szGoldName ǻƽ
                m_pMap->RemoveObjectӵͼ߸õƷ
if (m_pUserInfo->IncGold(pMapItem->nCount))ûĽǮ(תҷRM_ITEMHIDE Ϣظ壬GoldChanged()ıҵĽǮ򣬰ѻƽ𷵻صͼС
2m_pUserInfo->IsEnoughBag()
                ҵĻװ(ռ)m_pMap->RemoveObjectӵͼ߸õƷUpdateItemToDBûϢݿ⡣(תҷRM_ITEMHIDE Ϣظ壬SendAddItem(lptItemRcd)ҷͼ񵽶Ϣm_pUserInfo->m_lpTItemRcd.AddNewNodeѸƷԼбС
 
     c. if m_pxMouseTargetActor g_xClientSocket.SendNPCClickCM_CLICKNPC
ͻRenderScenem_pxMouseTargetActor = NULL;
CheckMappedData(nLoopTime, bIsMoveTime)ĳƶھͻ m_pxMouseTargetActorΪö
            NPC
if ( m_pxMouseTargetActor->m_stFeature.bGender == _GENDER_NPC ) 
        g_xClientSocket.SendNPCClick(m_pxMouseTargetActor->m_dwIdentity);
            CM_CLICKNPCϢ
            
m_xMyHero.OnLButtonDown
 
     d. m_xMyHero.OnLButtonDown
жm_xPacketQueueǷݣȴء
жm_pxMap->GetNextTileCanMove ꣬жϵͼϸõǷƶλã
        ƶʱ
           ˣSetMotionState(_MT_WALK
           SetMotionState(_MT_HORSEWALK
        ƶʱ
           ˣSetMotionState(_MT_STAND, bDir);
          SetMotionState(_MT_HORSESTAND, bDir);
        SetMotionState
            жѭĿΧ˸꣬һţʹŵg_xClientSocket.SendOpenDoor,CM_WALK
            m_bMotionLock = m_bInputLock = TRUE; Ϸ״̬
            m_wOldPosX = m_wPosX;                X
            m_wOldPosY = m_wPosY;               Y
            m_bOldDir = m_bCurrDir;             ҷ
ȻSetMotionFramem_bCurrMtn = _MT_WALKϷ״̬
        m_bMoveSpeed = _SPEED_WALKƶٶ1m_pxMap->ScrollMapõͼƫλãm_shViewOffsetX, m_shViewOffsetYȻͼػCGameProcess::RenderScene CGameProcess::RenderObject->DrawActorػ档
